#ifndef _OPENGLAPPFRAMEWORK_PLUGIN_INSTANCINGPLUGIN_H_
#define _OPENGLAPPFRAMEWORK_PLUGIN_INSTANCINGPLUGIN_H_

#include "OpenglAppFramework/inc/glm/glm.hpp"
#include "OpenglAppFramework/inc/PlugIn/PlugIn.h"

class InstancingPlugIn : public PlugIn {
public:
    InstancingPlugIn(const std::string& name);
    ~InstancingPlugIn();

    int setConfigData(const nlohmann::json& data);
    int init();
    void destroy();
    uint32_t getInstanceCount() const;
private:
    uint32_t m_instance_count;
    uint32_t m_buffer_id;
    glm::mat4* m_mats_data;
    std::string m_data_file_name;
};

#endif//_OPENGLAPPFRAMEWORK_PLUGIN_INSTANCINGPLUGIN_H_
